Field programmable gate array (FPGA) integrated semiconductor devices contain programmable logic components and programmable interconnects. FPGA components can be programmed to duplicate the functionality of basic logic gates, or more complex functions. Typically, FPGAs also include memory elements. Current FPGAs are slower than their application-specific integrated circuit (ASIC) counterparts, cannot handle as complex a design, and draw more power. However, FPGAs have a shorter time to market, can be reprogrammed in the field, and have lower non-recurring engineering costs.
Traditionally, the term “neural network” refers to a network of biological neurons. As used herein, “neural network”, also referred to as an “artificial neural network,” is a computing paradigm loosely modeled after cortical structures of the brain, and includes interconnected processing elements or neurons. These neurons work together to produce an output function that relies on the cooperation of individual neurons within the network in order to operate. However, a neural network can still perform its overall function if some of the neurons are not functioning.
Current neural networks are constructed in fixed arrays of neural elements or neurons with a limited ability to distribute weight values among the neurons. The architecture of the network is selected with a particular problem in mind, because different configurations are used to work different kinds of problems. While one of these configurations may be able to learn to solve a particular problem, it will not be as useful for other tasks. Also, with traditional neural network configurations, there is typically no way to quickly introduce alternate weight sets optimized for other problems, change the neuron interconnections, and/or save intermediate outputs within the current neural networks. Therefore, the usefulness of current neural network systems is limited.